package mine

object Types extends App {
  type @@[F, T] = F with T
  type g = String @@ Int
  type Nullable[A >: Null] = A
  //  type B >: Null
  val s = new Nullable[String]
  trait AA
  trait BB

  def caseFn[A, B](fn: A => B)(implicit ev: B <:< Option[_]) = null
  //  trait CC extends AA @@ BB
  caseFn { a: String =>
    //  	Some("")
    None
  }

  def g: Nullable[String] = null
  println("s=" + s)
  //	val m=new g
}